=== STEP_031B4 REDEPLOY LOADER VIA SSH STREAM === timestamp=20260708-103325 mode=file deploy + dry-run only remote changes expected: loader file only === local syntax === local_sh_n=OK === local sha256 === 26168d15e99c72d445c640171252953617877c7b747fd9146c1d39b78b567532 /opt/router-ops/product/egress/adapters/hidemyname/hmn-load-egress-slot.sh === copy loader to PVE tmp === === backup current VM101 loader === old_loader_backup=/root/hmn/backups/hmn-load-egress-slot.sh.before-step031b4-20260708-103325 === copy PVE tmp -> VM101 via ssh stream, no sftp === === validate remote loader === -rwx------ 1 root root 4331 Jul 8 10:33 /root/hmn/hmn-load-egress-slot.sh 26168d15e99c72d445c640171252953617877c7b747fd9146c1d39b78b567532 /root/hmn/hmn-load-egress-slot.sh remote_ash_n=OK #!/bin/ash set -eu SLOT="${1:-}" CONF="${2:-}" ACTION="${3:-dry-run}" case "$SLOT" in vpn1|vpn2|vpn3|vpn4|vpn5) ;; *) echo "ERROR: slot must be vpn1..vpn5" >&2 echo "Usage:" >&2 echo " hmn-load-egress-slot.sh vpn3 /path/to/config.conf dry-run" >&2 echo " hmn-load-egress-slot.sh vpn3 /path/to/config.conf load" >&2 echo " hmn-load-egress-slot.sh vpn3 /path/to/config.conf load-up" >&2 exit 1 ;; esac case "$ACTION" in dry-run|load|load-up) ;; *) echo "ERROR: action must be dry-run, load, or load-up" >&2 exit 1 ;; esac if [ -z "$CONF" ] || [ ! -f "$CONF" ]; then echo "ERROR: config not found: $CONF" >&2 exit 1 fi getv() { KEY="$1" awk -v key="$KEY" ' === DRY-RUN vpn3-vpn5 WITH RC/STDERR === === dry-run vpn3 === HMN generic egress slot loader slot=vpn3 config=/root/hmn/configs/awg1/20260601-100614/075-NL-Netherlands-Amsterdam-H13-95.211.68.119-awg1.conf endpoint=95.211.68.119:45176 address=10.104.58.24/32 action=dry-run DRY_RUN=YES No changes applied. RC_vpn3=0 === dry-run vpn4 === HMN generic egress slot loader slot=vpn4 config=/root/hmn/configs/awg1/20260708-042000/072-NL-Netherlands-Amsterdam-S8-78.31.250.16-awg1.conf endpoint=78.31.250.16:41729 address=10.103.120.171/32 action=dry-run DRY_RUN=YES No changes applied. RC_vpn4=0 === dry-run vpn5 === HMN generic egress slot loader slot=vpn5 config=/root/hmn/configs/awg1/20260601-100614/049-DE-Germany-Berlin-S7-157.173.27.69-awg1.conf endpoint=157.173.27.69:41797 address=10.97.189.145/32 action=dry-run DRY_RUN=YES No changes applied. RC_vpn5=0 === AFTER DRY-RUN SAFE STATE === date=Wed Jul 8 10:33:29 UTC 2026 === ip -br addr === lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 95.165.105.4/20 fe80::be24:11ff:fe42:83cf/64 eth1 UP 10.200.0.2/24 fe80::be24:11ff:fe09:4e2c/64 eth2 UP 10.71.100.2/24 fe80::be24:11ff:fe4d:7a71/64 eth3 UP 10.201.0.2/24 fe80::be24:11ff:fec8:2ee1/64 vpn1 UNKNOWN 10.91.233.132/32 === ip rule === 0: from all lookup local 10019: from all iif eth1 lookup 200 10020: from 10.200.0.0/24 lookup 200 32766: from all lookup main 32767: from all lookup default === tables 200-205 === TABLE 200 default dev vpn1 scope link 10.200.0.0/24 dev eth1 scope link src 10.200.0.2 10.201.0.0/24 dev eth3 scope link src 10.201.0.2 TABLE 201 TABLE 202 TABLE 203 TABLE 204 TABLE 205 === firewall vpn_out === firewall.@zone[3].name='vpn_in' firewall.@zone[3].network='vpn_in' firewall.@zone[4].name='vpn_out' firewall.@zone[4].network='vpn1' 'vpn2' 'vpn_user' firewall.@rule[7].name='Allow-ICMP-from-vpn_in-to-router' firewall.@rule[7].src='vpn_in' firewall.@forwarding[0]=forwarding firewall.@forwarding[0].src='direct_in' firewall.@forwarding[0].dest='wan' firewall.@forwarding[1]=forwarding firewall.@forwarding[1].src='vpn_in' firewall.@forwarding[1].dest='vpn_out' firewall.@forwarding[2]=forwarding firewall.@forwarding[2].src='vpn_in' firewall.@forwarding[2].dest='wan' === network vpn safe fields === ### network.vpn1 proto=amneziawg auto=0 disabled=0 addresses=10.91.233.132/32 hmn_role=active_spare_slot hmn_endpoint=178.215.227.13:44408 hmn_source_config=/root/hmn/configs/awg1/latest/150-NL-Netherlands-Amsterdam-R5-178.215.227.13-awg1.conf hmn_loaded_at=2026-07-06T17:07:53+00:00 ### network.vpn2 proto=amneziawg auto=0 disabled=0 addresses=10.86.108.200/32 hmn_role=active_spare_slot hmn_endpoint=192.121.163.235:42530 hmn_source_config=/root/hmn/configs/awg1/latest/128-LV-Latvia-Riga-S1-192.121.163.235-awg1.conf hmn_loaded_at=2026-07-08T06:15:47+00:00 ### network.vpn3 ### network.vpn4 ### network.vpn5 ### network.vpn_user proto=amneziawg auto=0 disabled=0 addresses=10.90.235.244/32 hmn_role=user_select_slot hmn_endpoint=37.235.54.96:38971 hmn_source_config=/root/hmn/configs/awg1/latest/146-GB-United-Kingdom-London-S1-37.235.54.96-awg1.conf hmn_loaded_at=2026-07-06T17:41:02+00:00 ### network.vpn_test proto=amneziawg auto=0 disabled=0 addresses=10.67.234.5/32 hmn_role=test_slot hmn_endpoint=192.71.27.64:40044 hmn_source_config=/root/hmn/configs/awg1/latest/225-IL-Israel-Tel-Aviv-S5-192.71.27.64-awg1.conf hmn_loaded_at=2026-07-08T04:31:40+00:00 === uci pending changes after === === legacy processes === === STEP_031B4 RESULT === deploy_rc=0 dryrun_count=3 rc_ok_count=3 uci_pending_change_lines_after=0 decision=PASS_REDEPLOY_DRYRUN === SAFE CAPTURE === REPORT=/opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/REPORT.txt SAFE_ARCHIVE=/opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325.safe.tar.gz RAW_LOCAL_ONLY=/opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw -rw-r--r-- 1 ops ops 25K Jul 8 10:33 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325.safe.tar.gz -rw------- 1 ops ops 170K Jul 8 10:33 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/REPORT.txt === RC SUMMARY === /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/local_access_map.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/local_date.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/local_router_ops_tree.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/pve_bridges.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/pve_qm_list.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/pve_snapshots_100.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/pve_snapshots_101.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/pve_vm100_config.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/pve_vm101_config.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm100_basic.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm100_relevant_files.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm100_uci_firewall.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm100_uci_network.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm100_wg_show.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_basic.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_hmn_tree.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_rt_nft.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_services_cron.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_uci_firewall.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_uci_network.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm101_wg_show.txt:rc=0 /opt/router-ops/captures/20260708-103329_step031b4_loader_sshstream_dryrun_20260708-103325/raw/vm121_state.txt:rc=0